package com.opencv.utils;

import cn.hutool.core.util.IdUtil;
import com.opencv.config.GlobalConfiguration;


/**
 * ID生成器工具类
 *
 * @author cgm
 */
public class IdUtils {
    /**
     * 获取随机UUID
     *
     * @return 随机UUID
     */
    public static String randomUUID() {
        return UUID.randomUUID().toString();
    }

    /**
     * 简化的UUID，去掉了横线
     *
     * @return 简化的UUID，去掉了横线
     */
    public static String simpleUUID() {
        return UUID.randomUUID().toString(true);
    }

    /**
     * 获取随机UUID，使用性能更好的ThreadLocalRandom生成UUID
     *
     * @return 随机UUID
     */
    public static String fastUUID() {
        return UUID.fastUUID().toString();
    }

    /**
     * 简化的UUID，去掉了横线，使用性能更好的ThreadLocalRandom生成UUID
     *
     * @return 简化的UUID，去掉了横线
     */
    public static String fastSimpleUUID() {
        return UUID.fastUUID().toString(true);
    }

    /**
     * 使用hu-tool生成雪花ID
     * 默认使用机房和数据中心均为1，预留分库分表接口
     *
     * @return 雪花ID值
     */
    public static long nextSnowFlakeId() {
        return IdUtil.getSnowflake(GlobalConfiguration.WORKER_ID, GlobalConfiguration.DATA_CENTER_ID).nextId();
    }

}
